package com.example.kaogong.sys.service;

import com.example.kaogong.common.utils.RespBean;
import com.example.kaogong.sys.pojo.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.kaogong.sys.pojo.dto.RegisterDto;
import com.example.kaogong.sys.pojo.dto.ResetPasswordDto;
import com.example.kaogong.sys.pojo.dto.UserInfoUpdateDto;
import com.example.kaogong.sys.pojo.vo.UserInfoVo;
import org.springframework.security.core.userdetails.UserDetails;

/**
 * <p>
 * 用户 服务类
 * </p>
 *
 * @author    
 * @since 2022-03-26
 */
public interface IUserService extends IService<User> {

    /**
     * 根据用户名获取用户信息
     * @param username 用户名
     * @return
     */
    User getUserInfoByUsername(String username);

    /**
     * 用户登录 并返回token
     * @param username 用户名
     * @param password  密码
     * @return
     */
    RespBean login(String username, String password);

    /**
     * 获取用户基本信息
     * @param name 用户名
     * @return
     */
    RespBean<UserInfoVo> getUserInfo(String name);

    /**
     * 判断用户名是否存在
     * @param username 用户名
     * @return
     */
    RespBean judgeUsernameExist(String username);

    /**
     * 用户注册
     * @param registerDto 用户注册传输对象
     * @return
     */
    RespBean userRegister(RegisterDto registerDto);

    /**
     * 修改当前用户密码
     * @param passwordDto
     * @param name 用户名
     * @return
     */
    RespBean resetPassword(ResetPasswordDto passwordDto, String name);

    /**
     * 修改当前登录用户基本信息
     * @param userInfoUpdateDto
     * @param name
     * @return
     */
    RespBean updateCurrentUserInfo(UserInfoUpdateDto userInfoUpdateDto, String name);

    /**
     * 修改当前用户头像
     * @param fileName 文件名
     * @param name 用户名
     * @return
     */
    RespBean updateUserAvatar(String fileName, String name);
}
